docs(service): name the eighth case list view on the SLA page - #1608
Merged
Conversation
`sla-and-escalation` told a service manager that `crm_case` ships **seven**
views and then hand-copied the roster behind that count. The copy was one view
short: **Unassigned — triage** was missing, in all three faces on the same line.
Re-derived from the file the sentence already cites. Two independent readings
of `src/views/case.view.ts` agree on eight list views: the default `list:`
block (*All Cases*) plus seven `listViews` entries — *Service Workflow*, *SLA
Calendar*, *Case Timeline*, *My Open Cases*, *Unassigned — triage*, *Escalated
Cases*, *⏰ SLA at Risk*. The second reading is off the built artifact
(`dist/objectstack.json`), not a grep, which is what settles the two shapes a
pattern cannot: `list.calendar` is a config block on the default grid
(`{startDateField, titleField, colorField}`), not a ninth view, and
`web_to_case` sits under `formViews`, so it is outside a list-view count.
The missing view is the one this page most needs named. **Unassigned — triage**
is where a web-to-case submission lands when nobody holds the Service Agent
position, so a page about SLA deadlines that omits it hides the queue where
unowned cases run their clock down.
Nothing else in the paragraph moved, and its other claims were re-measured
against the same file and hold: `is_sla_violated` appears in `case.view.ts`
only as a column on *All Cases* and in a docblock — no view filters on it — so
**Escalated Cases** is still the closest workable list.
Prose only. No `src/` change, no view added, renamed or removed.
The eighth name is spelled in English on both Chinese faces, matching the seven
siblings in that same sentence and the whole page, which names every view in
English. That page-wide convention is not this change's to settle and is
reported separately: the `zh-CN` pack carries a Chinese label for all eight.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018xtjdpZFjgWh4Ad9Wcx68J
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-steve
marked this pull request as ready for review
September 5, 2026 23:37
This was referenced Sep 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1541
Description
content/docs/service/sla-and-escalationline 144 stated a count and then hand-copied the roster behind it: "crm_caseships seven" followed by seven names. The eighth view, Unassigned — triage, was missing. All three faces carried it on the same line.This makes the paragraph true against the source it already cites. Prose only — no
src/change, and the source was not bent to match the paragraph.What the roster actually is, and how it was derived
Derived from
src/views/case.view.tsatorigin/main8223d0aa, by two independent readings that agree:list:(line 14),listViews:(72),form:(396),formViews:(433).pnpm buildthen readingdist/objectstack.json— the compiled descriptors, not a grep over the authoring file.Both give the same eight list views, in declaration order:
all_caseslist:blockcase_workflowlistViewssla_calendarlistViewscase_timelinelistViewsmy_open_caseslistViewsunassigned_triagelistViews— this is the one the page omittedescalated_caseslistViewssla_at_risklistViewsTwo neighbours that look like views to a pattern, and are not — the artifact settles both:
calendar:at line 63 is a config block, not a view. It is a property of the defaultlist:grid, and in the artifact it reads{"startDateField":"sla_due_date","titleField":"subject","colorField":"priority"}— the calendar visualization binding for that one grid. The dedicated calendar view is the separatesla_calendarentry.web_to_caseat line 434 is a form view, not a list view. It sits underformViews, alongside the defaultform:, so it is outside a list-view count. The artifact reports 2 form views and 8 list views.The name is inserted in source declaration order, between My Open Cases and Escalated Cases.
content/docs/service/casesalready said eight and listed all eight. That page was used as a cross-check only; the authority here issrc/views/case.view.ts. That page is not touched — it is #1542's surface, dispatched in parallel.The paragraph's other claims were re-measured, and hold
is_sla_violatedoccurs twice incase.view.ts: as a column on All Cases (line 28) and inside a docblock (line 360). It appears in no view'sfilter. The eight filters are: none (all_cases),is_closed = false, none, none, owner + status, owner is-null + status,is_escalated = true, status + priority.The card's second question: should
test/docs-view-rosters.test.tshave caught this?No — the guard's coverage rule does not reach this paragraph's shape. It is not a broken guard; it is a guard that never claimed this page. Three independent reasons, any one of them sufficient:
rosterOf()returnsnullfor all three faces. It requires a## Standard list viewsheading, in one of six locale spellings.sla-and-escalationcarries fourteen headings and none of them matches; the paragraph lives under## Recommended cadence.PAGE_OBJECT. The guard's onlycrm_caseentry iscontent/docs/service/cases.mdx. The stringsla-and-escalationdoes not appear anywhere in the guard file.tableBodyRowsfinds rows by the| --- |delimiter beneath a header. The defect is a running prose sentence with a count word and italic names — zero table rows. The guard's own docstring already records that a roster written as a bulleted list counts zero here; this is not even a bulleted list.Vacuity guard #1 (every English page with a roster section is mapped to an object) filters on
rosterOf(f) !== null, so it is correctly silent rather than failing open. The page never enters the rule, which is why it passed while the defect was live.Per that answer, and per
AGENTS.md§3 (drift-class gates go to the platform) plus epic #1579 retiring local ones: the guard is not extended and no new gate is added. The stop is at the prose.Type of Change
Documentation update.
Testing
Full
pnpm verifychain, run in this worktree at8385d11c. Each gate below names the property that run actually establishes:pnpm validatepnpm typecheckpnpm lintpnpm lint:i18n-gatepnpm hygienepnpm hygiene:tokenspnpm buildpnpm testdocs-drift,docs-locale-callouts,docs-anchor-links,docs-object-term-consistency,docs-zh-hant-justification,docs-view-rosters.src/views/case.view.tsand offdist/objectstack.jsonbuilt from it, atorigin/main8223d0aa.Deviation, reported rather than silently taken
The eighth name is spelled in English on both Chinese faces, matching the seven siblings inside the same sentence — the zh-Hans page names every view in English, fourteen mentions of them, and zero in the
zh-CNpack wording. Making that one inserted name Chinese would have produced a mixed-language enumeration; converting the whole enumeration would have rewritten wording the card did not raise, on a page whose convention is page-wide.The
zh-CNpack does carry a Chinese label for all eight (未分派 — 待分诊for this one), and the sibling zh-Hans Cases roster uses those labels — so the two zh-Hans pages in this section name the same views differently. That is a real inconsistency, adjacent to but distinct from #1552 (which asks about views the pack does not carry). It is filed separately rather than fixed here.Premise check
8223d0aa(PR Clear three platform lint rule families (31 of 90 warnings), and report the rest with named reasons #1605) did touchsrc/views/case.view.tstwenty minutes before dispatch. Verified independently: the diff is two lines, both inside theform:section (colSpan: 2becomesspan: 'full'onsubjectanddescription, lines 402 and 411). No list view was added, removed or renamed. The roster premise survives.🤖 Generated with Claude Code
Generated by Claude Code